+2005-10-13 Tor Lillqvist <tml@novell.com>
+
+ Set visual depth to 24 for 32 bits-per-pixel devices on
+ Win32. This allows gdk_drawable_real_draw_pixbuf() to use the
+ optimized composite_0888() function rather than the slower image
+ dithering functions to draw pixbufs (#313993, John Ehresman)
+
+ * gdk/win32/gdkimage-win32.c (_gdk_win32_new_image): Use
+ _gdk_windowing_get_bits_for_depth() to initialize
+ GdkImage::bits_per_pixel.
+ (_gdk_windowing_get_bits_for_depth): Return 32 bits for depth 24.
+
+ * gdk/win32/gdkpixmap-win32.c (gdk_pixmap_new): Use
+ _gdk_windowing_get_bits_for_depth() to initialize
+ BITMAPINFOHEADER::biBitCount.
+
+ * gdk/win32/gdkvisual-win32.c (_gdk_visual_init): Set
+ GdkVisual::depth to 24 even if GetDeviceCaps(BITSPIXEL) returns
+ 32.
+
2005-10-12 Stefan Kost <ensonic@users.sf.net>
* demos/gtk-demo/appwindow.c: (about_cb):
+2005-10-13 Tor Lillqvist <tml@novell.com>
+
+ Set visual depth to 24 for 32 bits-per-pixel devices on
+ Win32. This allows gdk_drawable_real_draw_pixbuf() to use the
+ optimized composite_0888() function rather than the slower image
+ dithering functions to draw pixbufs (#313993, John Ehresman)
+
+ * gdk/win32/gdkimage-win32.c (_gdk_win32_new_image): Use
+ _gdk_windowing_get_bits_for_depth() to initialize
+ GdkImage::bits_per_pixel.
+ (_gdk_windowing_get_bits_for_depth): Return 32 bits for depth 24.
+
+ * gdk/win32/gdkpixmap-win32.c (gdk_pixmap_new): Use
+ _gdk_windowing_get_bits_for_depth() to initialize
+ BITMAPINFOHEADER::biBitCount.
+
+ * gdk/win32/gdkvisual-win32.c (_gdk_visual_init): Set
+ GdkVisual::depth to 24 even if GetDeviceCaps(BITSPIXEL) returns
+ 32.
+
2005-10-12 Stefan Kost <ensonic@users.sf.net>
* demos/gtk-demo/appwindow.c: (about_cb):
image->width = width;
image->height = height;
image->depth = depth;
+ image->bits_per_pixel = _gdk_windowing_get_bits_for_depth (gdk_display_get_default (), depth);
switch (depth)
{
case 1:
image->bpp = 2;
break;
case 24:
- image->bpp = 3;
+ image->bpp = image->bits_per_pixel / 8;
break;
case 32:
image->bpp = 4;
image->bpl = ((width - 1)/8 + 1)*4;
else
image->bpl = ((width*image->bpp - 1)/4 + 1)*4;
- image->bits_per_pixel = image->depth;
image->mem = bits;
return image;
return 16;
case 24:
- return 24;
-
case 32:
return 32;
}
case 1:
case 24:
case 32:
- bmi.bmiHeader.biBitCount = depth;
+ bmi.bmiHeader.biBitCount = _gdk_windowing_get_bits_for_depth (gdk_display_get_default (), depth);
break;
case 4:
}
else if (bitspixel == 24 || bitspixel == 32)
{
+ bitspixel = 24;
system_visual->type = GDK_VISUAL_TRUE_COLOR;
system_visual->red_mask = 0x00FF0000;
system_visual->green_mask = 0x0000FF00;